﻿using System.Collections.Generic;
using System.Xml.Linq;

namespace BodaNetCommunications.Nodes
{
    public class BodaNodeClass : IXmlConvert
    {
        //
        // 摘要:
        //     节点的名称，在节点上显示的
        public string Name { get; set; }

        //
        // 摘要:
        //     描述信息
        public string Description { get; set; }

        //
        // 摘要:
        //     节点的类型，标记其派生类不同的类型对象
        public int NodeType { get; protected set; }

        //
        // 摘要:
        //     节点的描述信息
        protected string NodeHead { get; set; }

        public BodaNodeClass()
        {
            NodeType = 1;
            NodeHead = "NodeClass";
        }

        //
        // 摘要:
        //     从XML元素对象中获取对象属性
        //
        // 参数:
        //   element:
        public virtual void LoadByXmlElement(XElement element)
        {
            Name = element.Attribute("Name").Value;
            Description = element.Attribute("Description").Value;
        }

        //
        // 摘要:
        //     将对象属性保存至XML元素对象
        public virtual XElement ToXmlElement()
        {
            XElement xElement = new XElement(NodeHead);
            xElement.SetAttributeValue("Name", Name);
            xElement.SetAttributeValue("Description", Description);
            return xElement;
        }

        //
        // 摘要:
        //     获取用于在数据表信息中显示的键值数据对信息
        //
        // 返回结果:
        //     键值数据对列表
        public virtual List<BodaNodeClassRenderItem> GetNodeClassRenders()
        {
            return new List<BodaNodeClassRenderItem>
            {
                BodaNodeClassRenderItem.CreatNodeName(Name),
                BodaNodeClassRenderItem.CreatNodeName(Description)
            };
        }
    }
}